package gbench.appdemo.ggplot.util;

import java.util.Arrays;

public class TextUtil {
    
    /**
     * 文本内容
     * @param x 水平偏移
     * @param y 垂直偏移
     * @param rgb 颜色
     * @param fontSize 字体大小
     * @param style 字体式样
     * @param s 文本内容
     * @return int[]
     */
    public static int[] xyRgbSizeStyleText(int x,int y,int rgb[],int fontSize,int style,String s){
        final var aa = new int[2+3+1+1+s.length()];
        aa[0]=x;
        aa[1]=y;
        System.arraycopy(rgb, 0, aa, 2, 3);
        aa[5]=fontSize;
        aa[6]=style;
        System.arraycopy(s.chars().toArray(), 0, aa, 6, s.length());
        
        return aa;
    }
    
    /**
     * 整形数组的拼接
     * @param rgb 颜色
     * @param size 字体大小
     * @param style 字体式样
     * @param s 文本内容
     * @return int[]
     */
    public static int[] rgbSizeStyleText(int rgb[],int size,int style,String s){
        final var aa = new int[3+1+1+s.length()];
        System.arraycopy(rgb, 0, aa, 0, 3);
        aa[3]=size;
        aa[4]=style;
        System.arraycopy(s.chars().toArray(), 0, aa, 5, s.length());
        //System.out.println(rgbSizeStyleText2String(aa));
        return aa;
    }
    
    /**
     * 字符串元素
     * @param rgbSizeStyleText 整形数组
     * @return 提取出的字符串
     */
    public static String rgbSizeStyleText2String(int []rgbSizeStyleText){
        return Arrays.stream(rgbSizeStyleText).skip(5).mapToObj(c->Character.valueOf((char)c))
            .collect(StringBuffer::new, StringBuffer::append, StringBuffer::append).toString();
    }
    
    /**
     * 字符串元素
     * @param xyRgbSizeStyleText 整形数组
     * @return 取出的字符串
     */
    public static String xyRgbSizeStyleText2String(int []xyRgbSizeStyleText){
        return Arrays.stream(xyRgbSizeStyleText).skip(7).mapToObj(c->Character.valueOf((char)c))
            .collect(StringBuffer::new, StringBuffer::append, StringBuffer::append).toString();
    }

}
